perm filename COMSUB.SAI[SYS,ALS] blob
sn#001163 filedate 1972-10-19 generic text, type T, neo UTF8
00005 ENTRY WAIT;
00010 BEGIN "COMSUB"
00020
00030 DEFINE ⊃="COMMENT";
00040 REQUIRE "PROLOG.HDR[1,PDQ]" SOURCE_FILE;
00050
00060 INTERNAL PROCEDURE WAIT(INTEGER SECS);CALL(SECS,"SLEEP");
00070
00080 INTEGER FOO;
00090 DEFINE CR="'15",LF="'12",TAB="'11",SPACE="'40",CRLF="CR&LF";
00100
00110 INTEGER DATE,TIME;
00120 DEFINE GETIME="BEGIN DATE←CALL(0,""DATE""); TIME←CALL(0,""TIMER"")%60; END";
00130
00140 INTERNAL STRING PROCEDURE DATIM; ⊃ Returns string equivalent to monitor DAYTIME command;
00150 BEGIN INTEGER DAY,YR,HRS,MIN,SEC;
00160 PRELOAD_WITH "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG",
00170 "SEP","OCT","NOV","DEC";
00180 OWN STRING_ARRAY MONTHS[0:11];
00190 DAY←(DATE MOD 31)+1;DATE←DATE%31;
00200 YR←1964+DATE%12;SEC←TIME MOD 60;TIME←TIME%60;MIN←TIME MOD 60;HRS←TIME%60;
00210 SETFORMAT(-2,0);
00220 RETURN(CVS(DAY)&"-"&MONTHS[DATE MOD 12]&"-"&CVS(YR)&" "&CVS(HRS)&CVS(MIN)&":"&CVS(SEC));
00230 END "DATIM";
00240
00250 INTERNAL REAL PROCEDURE RUNTIM;RETURN(CALL(0,"RUNTIM"));
00260 INTERNAL REAL PROCEDURE ALLTIM;RETURN(CALL(0,"TIMER")/60);
00270 INTERNAL REAL RTIM,ATIM;
00280 INTERNAL PROCEDURE TIMSET;BEGIN RTIM←RUNTIM;ATIM←ALLTIM;END;
00290 INTERNAL PROCEDURE TIMOUT(STRING S);
00300 BEGIN REAL DRT;SETFORMAT(5,2);
00310 OUTSTR(S&" SECS RUN="&CVF(DRT←RUNTIM-RTIM)&
00320 " % PROCESSOR="&CVF(100*DRT/(ALLTIM-ATIM))&CRLF);
00330 END;
00340
00350 INTERNAL STRING PROCEDURE DATIME;BEGIN GETIME;RETURN(DATIM);END;
00360
00370 INTERNAL PROCEDURE ERP(STRING S);USERRRR(0,1,S); ⊃ Output error message S;
00380
00390 INTERNAL INTEGER PROCEDURE LOC(INTEGER X);RETURN(X);
00400 ⊃ When combined with the declaration:
00410 EXTERNAL INTEGER PROCEDURE LOC(REFERENCE INTEGER X)
00420 this procedure gives the address of X;
00430
00440 INTERNAL INTEGER PROCEDURE MIN(INTEGER X,Y);RETURN(IF X<Y THEN X ELSE Y);
00450 INTERNAL INTEGER PROCEDURE MAX(INTEGER X,Y);RETURN(IF X>Y THEN X ELSE Y);
00460
00010 ⊃ ********* Super good TTY I/O functions ********;
00020
00030
00040 INTERNAL PROCEDURE REALOUT(STRING S;REAL X);
00050 ⊃ outputs a real number on the TTY;
00060 BEGIN SETFORMAT(7,2);
00070 OUTSTR(S);
00080 OUTSTR((IF ABS(X)<1@-2 THEN CVE(X) ELSE CVF(X))&" ");
00090 END;
00100
00110 INTERNAL STRING PROCEDURE CVS3(INTEGER I);BEGIN SETFORMAT(3,0);RETURN(CVS(I)) END;
00120
00130 INTERNAL REAL PROCEDURE CVR(STRING S);RETURN(REALSCAN(S,FOO));
00140 ⊃ converts a real number to a string;
00150
00160 INTERNAL STRING PARS;
00170 INTERNAL BOOLEAN XREMEMBER;
00180
00190 INTERNAL STRING PROCEDURE STRIN(STRING S);
00200 ⊃ prints S and returns a string input from the TTY. PARS remembers
00210 everything output and input if REMEMBER=TRUE;
00220 BEGIN STRING C;OUTSTR(S);SETBREAK(1,LF&TAB&SPACE,CR,"INS");
00230 C←TTYINL(1,FOO); IF XREMEMBER THEN PARS←PARS&S&C&",";RETURN(C) END;
00240
00250 INTERNAL REAL PROCEDURE INREAL(STRING S);RETURN(CVR(STRIN(S)));
00260 ⊃ inputs a real number, remembering with PARS;
00270
00280 INTERNAL INTEGER PROCEDURE ININT(STRING S);RETURN(CVD(STRIN(S)));
00290 ⊃ Inputs an integer, remembering with PARS;
00300
00010 END "COMSUB";